﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WCS.Infrastructure.Dto.Enums
{
    /// <summary>
    /// 表示支付过程中的各种状态。
    /// </summary>
    public enum PaymentStatus
    {
        /// <summary>
        /// 用户发起支付请求，支付系统刚刚接收到相关信息，开始准备处理该笔交易，尚未与银行或第三方支付渠道进行交互。
        /// </summary>
        Initializing,

        /// <summary>
        /// 支付系统已经将支付请求发送给银行、第三方支付机构等支付渠道，正在等待其处理结果。
        /// </summary>
        Processing,

        /// <summary>
        /// 支付渠道已经成功从用户账户扣除相应款项，并将资金结算到收款方账户，支付交易全过程顺利完成。
        /// </summary>
        PaymentCompleted,

        /// <summary>
        /// 在一些支持分阶段或部分金额支付的场景中，部分款项支付成功，但还有剩余金额未支付。
        /// </summary>
        PartiallyPaid,

        /// <summary>
        /// 在支付过程中，用户主动放弃支付操作。
        /// </summary>
        UserCancelled,

        /// <summary>
        /// 用户用于支付的账户（如银行卡、钱包余额等）中的资金不足以支付本次交易金额。
        /// </summary>
        InsufficientBalance,

        /// <summary>
        /// 支付操作在规定的时间内未完成。
        /// </summary>
        PaymentTimedOut,

        /// <summary>
        /// 支付系统、银行系统或第三方支付机构的系统出现故障，导致支付无法正常进行。
        /// </summary>
        SystemError,

        /// <summary>
        /// 支付系统的风险监控机制检测到该笔交易存在风险，为保障用户资金安全，拦截并终止支付。
        /// </summary>
        RiskIntercepted
    }

    /// <summary>
    /// 表示退款过程中的各种状态。
    /// </summary>
    public enum RefundStatus
    {
        /// <summary>
        /// 用户向商家或支付平台提出退款请求，系统已经接收到该申请，正在进行审核和处理准备工作。
        /// </summary>
        RefundRequested,

        /// <summary>
        /// 退款申请已通过审核，支付系统开始将资金从收款方账户退回至用户账户的操作流程。
        /// </summary>
        RefundProcessing,

        /// <summary>
        /// 资金已成功从收款方账户退回至用户账户，退款流程完成。
        /// </summary>
        RefundCompleted,

        /// <summary>
        /// 在退款过程中，由于各种原因（如银行账户信息错误、系统故障等）导致退款操作未能成功完成。
        /// </summary>
        RefundFailed
    }

    /// <summary>
    /// 表示订单在其生命周期内可能处于的各种状态。
    /// </summary>
    public enum OrderStatus
    {
        /// <summary>
        /// 订单已创建，但尚未完成支付流程。
        /// 此状态通常在用户提交订单后，尚未进行支付操作时出现。
        /// </summary>
        Created,

        /// <summary>
        /// 订单正在支付处理中。
        /// 支付请求已发送给支付渠道，系统正在等待支付结果反馈。
        /// </summary>
        PaymentProcessing,

        /// <summary>
        /// 订单支付成功，款项已从用户账户扣除并结算到商家账户。
        /// 此时订单可以进入后续的发货等流程。
        /// </summary>
        PaymentSuccess,

        /// <summary>
        /// 订单支付失败，可能由于用户取消支付、余额不足、支付超时等原因导致。
        /// 该订单可能需要用户重新发起支付。
        /// </summary>
        PaymentFailed,

        /// <summary>
        /// 订单已确认，商家已经收到支付信息并确认订单的有效性。
        /// 确认后可能开始进行备货等操作。
        /// </summary>
        Confirmed,

        /// <summary>
        /// 订单商品正在准备发货，商家正在进行商品打包、拣货等操作。
        /// </summary>
        PreparingForShipment,

        /// <summary>
        /// 订单商品已发货，商品已离开商家仓库，处于物流运输过程中。
        /// </summary>
        Shipped,

        /// <summary>
        /// 订单商品已送达用户指定地址，物流配送完成。
        /// </summary>
        Delivered,

        /// <summary>
        /// 用户已签收商品，确认收到货物。
        /// 此状态标志着订单的物流环节正式结束。
        /// </summary>
        Signed,

        /// <summary>
        /// 用户发起了退款申请，系统已接收到该申请，正在进行审核。
        /// </summary>
        RefundRequested,

        /// <summary>
        /// 退款申请已通过审核，正在进行退款处理操作。
        /// 款项正在从商家账户退回至用户账户。
        /// </summary>
        RefundProcessing,

        /// <summary>
        /// 退款操作已成功完成，款项已退回至用户账户。
        /// 该订单的退款流程结束。
        /// </summary>
        RefundSuccess,

        /// <summary>
        /// 退款操作失败，可能由于银行账户信息错误、系统故障等原因导致。
        /// 需要进一步处理退款问题。
        /// </summary>
        RefundFailed,

        /// <summary>
        /// 订单已取消，可能是用户主动取消或者由于某些原因（如商品缺货等）由商家取消。
        /// 取消后订单不再进行后续流程。
        /// </summary>
        Cancelled,

        /// <summary>
        /// 订单已完成，涵盖了商品签收、无退款需求等所有正常流程结束的情况。
        /// 此状态表示订单整个生命周期结束。
        /// </summary>
        Completed
    }

    /// <summary>
    /// 收款渠道或平台类型
    /// </summary>
    public enum PaymentChannelType
    {
        /// <summary>
        /// 支付宝
        /// </summary>
        Alipay,

        /// <summary>
        /// 微信支付
        /// </summary>
        WeChatPay,

        /// <summary>
        /// 贝宝，国际上广泛使用的在线支付平台
        /// </summary>
        PayPal,

        /// <summary>
        /// 信用卡支付，通过信用卡进行在线或线下消费的支付方式
        /// </summary>
        CreditCard,

        /// <summary>
        /// 借记卡支付，直接从银行账户扣除款项的支付方式
        /// </summary>
        DebitCard,

        /// <summary>
        /// 银联支付，中国银行卡联合组织推出的支付渠道
        /// </summary>
        UnionPay,

        /// <summary>
        /// 现金支付，使用纸币或硬币进行交易的传统支付方式
        /// </summary>
        Cash,

        /// <summary>
        /// 银行转账，通过银行系统将款项从一个账户转到另一个账户的支付方式
        /// </summary>
        BankTransfer,

        /// <summary>
        /// 支票支付，由出票人签发委托办理支票存款业务的银行在见票时无条件支付确定金额给收款人或持票人的票据支付方式
        /// </summary>
        Cheque,

        /// <summary>
        /// 数字钱包，如 Apple Pay、Google Pay 等基于移动设备的便捷支付方式
        /// </summary>
        DigitalWallet,

        /// <summary>
        /// 加密货币支付，使用比特币等加密货币进行交易的支付方式
        /// </summary>
        Cryptocurrency,
        /*
        /// <summary>
        /// 易票联
        /// </summary>
        Epaylinks,

        /// <summary>
        /// 邮付通
        /// </summary>
        PostalPayment*/
        Unknown = 999
    }

    public enum RateRelatedEntityType
    {
        None,
        Platform,
        Company,
        SubCompany,
        Store,
        PaymentDevice,
        PaymentCode
    }
}
